#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/version.h>
#include <linux/list.h>

/*
 * 遍历整个模块链表，并打印出各个模块的名字，就如同 lsmod 的精简版
 */

MODULE_LICENSE("Dual BSD/GPL");

struct module *m = &__this_module;

static void list_module_test(void)
{
	struct module *mod;
	list_for_each_entry(mod, m->list.prev, list)
		printk("%s\n", mod->name);
}

static int __init list_module_init(void)
{
	list_module_test();
	return 0;
}

static void __exit list_module_exit(void)
{
	printk("unload listmoudle.ko\n");
}

module_init(list_module_init);
module_exit(list_module_exit);

// dmesg -c  查看内核打印.
